

//初始化 SDK key
RongIMLib.RongIMClient.init("k51hidwqkno2b");
/**
 * 设置监听
 */
// 设置连接监听状态 （ status 标识当前连接状态 ）
// 连接状态监听器
RongIMClient.setConnectionStatusListener({
	onChanged: function(status) {
		switch(status) {
			case RongIMLib.ConnectionStatus.CONNECTED:
				console.log('链接成功');
				break;
			case RongIMLib.ConnectionStatus.CONNECTING:
				console.log('正在链接');
				break;
			case RongIMLib.ConnectionStatus.DISCONNECTED:
				console.log('断开连接');
				break;
			case RongIMLib.ConnectionStatus.KICKED_OFFLINE_BY_OTHER_CLIENT:
				console.log('其他设备登录');
				break;
			case RongIMLib.ConnectionStatus.DOMAIN_INCORRECT:
				console.log('域名不正确');
				break;
			case RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE:
				console.log('网络不可用');
				break;
		}
	}
});

// 消息监听器
RongIMClient.setOnReceiveMessageListener({
	// 接收到的消息
	onReceived: function(message) {
		// 判断消息类型
		switch(message.messageType) {
			case RongIMClient.MessageType.TextMessage:
				// message.content.content => 消息内容
				break;
			case RongIMClient.MessageType.VoiceMessage:
				// 对声音进行预加载                
				// message.content.content 格式为 AMR 格式的 base64 码
				break;
			case RongIMClient.MessageType.ImageMessage:
				// message.content.content => 图片缩略图 base64。
				// message.content.imageUri => 原图 URL。
				break;
			case RongIMClient.MessageType.DiscussionNotificationMessage:
				// message.content.extension => 讨论组中的人员。
				break;
			case RongIMClient.MessageType.LocationMessage:
				// message.content.latiude => 纬度。
				// message.content.longitude => 经度。
				// message.content.content => 位置图片 base64。
				break;
			case RongIMClient.MessageType.RichContentMessage:
				// message.content.content => 文本消息内容。
				// message.content.imageUri => 图片 base64。
				// message.content.url => 原图 URL。
				break;
			case RongIMClient.MessageType.InformationNotificationMessage:
				// do something...
				break;
			case RongIMClient.MessageType.ContactNotificationMessage:
				// do something...
				break;
			case RongIMClient.MessageType.ProfileNotificationMessage:
				// do something...
				break;
			case RongIMClient.MessageType.CommandNotificationMessage:
				// do something...
				break;
			case RongIMClient.MessageType.CommandMessage:
				// do something...
				break;
			case RongIMClient.MessageType.UnknownMessage:
				// do something...
				break;
			default:
				// do something...
		}
	}
});

/**
 * 连接服务器
 */
var token = sessionStorage.getItem("ryToken");

RongIMClient.connect(token, {
	onSuccess: function(userId) {
		console.log("Connect successfully." + userId);
	},
	onTokenIncorrect: function() {
		console.log('token无效');
	},
	onError: function(errorCode) {
		var info = '';
		switch(errorCode) {
			case RongIMLib.ErrorCode.TIMEOUT:
				info = '超时';
				break;
			case RongIMLib.ErrorCode.UNKNOWN_ERROR:
				info = '未知错误';
				break;
			case RongIMLib.ErrorCode.UNACCEPTABLE_PaROTOCOL_VERSION:
				info = '不可接受的协议版本';
				break;
			case RongIMLib.ErrorCode.IDENTIFIER_REJECTED:
				info = 'appkey不正确';
				break;
			case RongIMLib.ErrorCode.SERVER_UNAVAILABLE:
				info = '服务器不可用';
				break;
		}
		console.log(errorCode);
	}
});
/**
 * 重新连接
 */

var callback = {
	onSuccess: function(userId) {
		console.log("Reconnect successfully." + userId);
	},
	onTokenIncorrect: function() {
		console.log('token无效');
	},
	onError: function(errorCode) {
		console.log(errorcode);
	}
};
var config = {
	// 默认 false, true 启用自动重连，启用则为必选参数
	auto: true,
	// 重试频率 [100, 1000, 3000, 6000, 10000, 18000] 单位为毫秒，可选
	url: 'cdn.ronghub.com/RongIMLib-2.2.6.min.js',
	// 网络嗅探地址 [http(s)://]cdn.ronghub.com/RongIMLib-2.2.6.min.js 可选
	rate: [100, 1000, 3000, 6000, 10000]
};
RongIMClient.reconnect(callback, config);


/**
 * 加入聊天室
 */
var chatRoomId = "xxxx"; // 聊天室 Id。
var count = 10;// 拉取最近聊天最多 50 条。
RongIMClient.getInstance().joinChatRoom(chatRoomId, count, {
  onSuccess: function() {
       // 加入聊天室成功。
  },
  onError: function(error) {
    // 加入聊天室失败
  }
});

/**
 * 获取信息
 */
var chatRoomId = "xxxx";// 聊天室 Id。
var count = 10; // 获取聊天室人数 （范围 0-20 ）
var order = RongIMLib.GetChatRoomType.REVERSE;// 排序方式。
RongIMClient.getInstance().getChatRoomInfo(chatRoomId, count, order, {
  onSuccess: function(chatRoom) {
       // chatRoom => 聊天室信息。
    // chatRoom.userInfos => 返回聊天室成员。
     // chatRoom.userTotalNums => 当前聊天室总人数。
  },
  onError: function(error) {
    // 获取聊天室信息失败。
  }
});
/**
 * 退出
 */
var chatRoomId = "xxxx"; // 聊天室 Id。
RongIMClient.getInstance().quitChatRoom(chatRoomId, {
  onSuccess: function() {
       // 退出聊天室成功。
  },
  onError: function(error) {
    // 退出聊天室失败。
  }
});

/**
 * 初始化 Emoji
 */
RongIMLib.RongIMEmoji.init();

//通过配置扩展表情初始化，可参考 http://unicode.org/emoji/charts/full-emoji-list.html
var newEmojis = {
  dataSource: {
    "表情unicode码":{
      "en":"英文名称",
      "zh":"中文名称",
      "tag":"原生表情字符",
      "bp":"多背景图时表情对应的坐标"
    },
  },
  url: "背景图片地址"
};
RongIMLib.RongIMEmoji.init(newEmojis);

/**
 * 获取全部表情
 */
var emojis = RongIMLib.RongIMEmoji.emojis;
// emojis[0].innerHTML => <span class="RongIMExpression_grinning" name="[大笑]"> 表情字符 </span>
// emojis[0].children[0].getAttribute("name") => "[大笑]"

/**
 * Emoji 转名称
 */
var message = "😀😁测试 Emoji";
message = RongIMLib.RongIMEmoji.emojiToSymbol(message);
// message => "[大笑][露齿而笑]测试Emoji"
/**
 * 名称转 Emoji
 */
var message = "[大笑][露齿而笑]测试Emoji";
message = RongIMLib.RongIMEmoji.symbolToEmoji(message);
//message => "😀😁测试Emoji"
//sendMessage(conversationtype, targetId, message, callbacks);

/**
 * Emoji 转 HTML
 */
var message = "\uf600\uf601测试Emoji";
RongIMLib.RongIMEmoji.emojiToHTML(message);
/**
 * 名称转 HTML
 */
var message = "[露齿而笑]测试 Emoji";
RongIMLib.RongIMEmoji.symbolToHTML(message);